﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Logic.ControlExeption;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Facade.Interface;
using Crosland.Automotriz.Facade.Facade;
using DevExpress.Web.ASPxEditors;
using System.Collections;
using DevExpress.Web.ASPxGridView;
namespace Crosland.Automotriz.Web.Repuestos
{
    public partial class wFrmMaterialesPorAsignar : System.Web.UI.Page
    {
        private static iFacadeRegistroMaterial InterfaceMaterial;
        private List<TD_GRUPO_ARTICULO> listaGrupoArticulo = null;
        private List<TD_SECTOR> listaSector = null;
        private List<TD_JERARQUIA> listaJerarquia = null;
        private static TD_MATERIAL objTD_MATERIAL;
        private static IEnumerable<Object> listaMarca = null;
        private static List<TD_MODELO> listaModelo = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            this.CargaGrupoArticulo();
            this.CargaSector();


            if (Page.IsPostBack == false)
            {
                Panel img = (Panel)Master.FindControl("asp");
                img.Visible = false;
                Panel img2 = (Panel)Master.FindControl("pnlTop");
                img2.Visible = false;
                this.ListaMaterialPorAsginar();

            }
            //this.ListaMaterialPorAsginar();
        }






        private void MensajesError(String msgUsu, Exception ex, String metError)
        {
            Crosland.Automotriz.Web.UserControl.MensajeError uc = (Crosland.Automotriz.Web.UserControl.MensajeError)Master.FindControl("ucErrorMensaje");
            String msgReal, fhError, pagError, codUsu;
            msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
            pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
            codUsu = Session["User"].ToString();
            fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
            int number = 0;
            for (int i = 0; i < trace.FrameCount; i++)
            {
                System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                number = sf.GetFileLineNumber();
            }
            uc.Errores(msgUsu, msgReal, fhError, pagError, metError, codUsu, number);
        }

        private void GuardarExceptionLog(String msgUsu, Exception ex, String metError)
        {
            try
            {
                String msgReal, fhError, pagError, codUsu;
                msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
                codUsu = Session["User"].ToString();
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                int number = 0;
                for (int i = 0; i < trace.FrameCount; i++)
                {
                    System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                    number = sf.GetFileLineNumber();
                }
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                new Logg().ErrorLog(Server.MapPath("~/Logs/ErrorLog.csv"), msgUsu, msgReal, pagError, metError, codUsu, number);
            }
            catch (Crosland.Automotriz.Logic.ControlExeption.DataException e)
            {
                MensajesError(e.Message, e, "GuardarExceptionLog");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "GuardarExceptionLog");
            }
        }

        private void ListaMaterialPorAsginar()
        {
            try
            {
                clsTD_MaterialLogic material = new clsTD_MaterialLogic();
                grbMaterialPorAsginar.DataSource = material.ListaMaterialPorAsignar();
                grbMaterialPorAsginar.DataBind();
            }
            catch (DataException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "ListaMaterialPorAsginar");
                MensajesError(ex.Message, ex, "ListaMaterialPorAsginar");

            }
        }

        private void CargaGrupoArticulo()
        {
            try
            {
                listaGrupoArticulo = new List<TD_GRUPO_ARTICULO>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                listaGrupoArticulo = InterfaceMaterial.ListarGrupoArticulo();
                cboGrupoArticulo.DataSource = listaGrupoArticulo;
                cboGrupoArticulo.TextField = "DES_GRUPO_ARTICULO_2";
                cboGrupoArticulo.ValueField = "ID_GRUPO_ARTICULO";
                cboGrupoArticulo.DataBind();
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "CargaGrupoArticulo");
                MensajesError("Error en la aplicación", ex, "CargaGrupoArticulo");
            }
        }

        private void CargaSector()
        {
            try
            {
                listaSector = new List<TD_SECTOR>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                listaSector = InterfaceMaterial.ListarSector();
                cboSector.DataSource = listaSector;
                cboSector.TextField = "DES_SECTOR";
                cboSector.ValueField = "ID_SECTOR";
                cboSector.DataBind();
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "CargaSector");
                MensajesError("Error en la aplicación", ex, "CargaSector");
            }
        }

        private void CargaJerarquia()
        {
            try
            {
                listaJerarquia = new List<TD_JERARQUIA>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                listaJerarquia = InterfaceMaterial.ListarJerarquia(txtBuscar.Text.Trim());


                grdTD_JERARQUIA.DataSource = listaJerarquia;
                grdTD_JERARQUIA.DataBind();
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "CargaJerarquia");
                MensajesError("Error en la aplicación", ex, "CargaJerarquia");
            }
        }

        private void CargaModelo(String strNroRuedas, int intIdMarca)
        {
            try
            {
                //  int? intvacio = null;           
                listaModelo = new List<TD_MODELO>();
                InterfaceMaterial = new FacadeRegistroMaterial();

                listaModelo = InterfaceMaterial.ListarModelo(strNroRuedas, intIdMarca, "C");
                if (listaModelo.Count == 0 || listaModelo == null)
                {
                    lblmsj.Text = "No Hay Datos Para La Marca y Nro de Rueda Seleccionado";
                    cboModelo.Enabled = false;
                    cboModelo.Value = null;

                    popupmsj.ShowOnPageLoad = true;
                    return;
                }
                cboModelo.DataSource = listaModelo;
                cboModelo.TextField = "DES_MODELO";
                cboModelo.ValueField = "ID_MODELO";
                cboModelo.DataBind();
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "CargaModelo");
                MensajesError("Error en la aplicación", ex, "CargaModelo");
            }
        }

        protected void grbMaterialPorAsginar_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {

            grbMaterialPorAsginar.Selection.UnselectAll();
            this.ListaMaterialPorAsginar();
        }

        protected void btnBuscarJerarquia_Click(object sender, EventArgs e)
        {
            this.CargaJerarquia();
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            CargaJerarquia();
        }

        protected void grdTD_JERARQUIA_PageIndexChanged(object sender, EventArgs e)
        {
            CargaJerarquia();
        }

        protected void grdTD_JERARQUIA_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            CargaJerarquia();
        }

        protected void AgregarJerarquia(object sender, EventArgs e)
        {
            try
            {
                int intIndexJerarquia = grdTD_JERARQUIA.FocusedRowIndex;
                if (intIndexJerarquia == -1)
                {
                    lblmsj.Text = "No se ha seleccionado ningun registro";
                    popupmsj.ShowOnPageLoad = true;
                    return;
                }
                int intIdJerarquia = Convert.ToInt32(grdTD_JERARQUIA.GetRowValues(intIndexJerarquia, "ID_JERARQUIA"));
                String strCodJerarquia = grdTD_JERARQUIA.GetRowValues(intIndexJerarquia, "COD_JERARQUIA").ToString();
                String strDesJerarquia = grdTD_JERARQUIA.GetRowValues(intIndexJerarquia, "DES_JERARQUIA").ToString();

                txtidJerarquia.Text = intIdJerarquia.ToString();
                txtcodJerarquia.Text = strCodJerarquia;
                txtnomJerarquia.Text = strDesJerarquia;
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "CargaJerarquia");
                MensajesError("Error en la aplicación", ex, "CargaJerarquia");
            }
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            this.Grabar();
        }

        private void Grabar()
        {

            try
            {

                clsT_MaterialPorAsignarLogic materialxAsginar = new clsT_MaterialPorAsignarLogic();
                clsTD_MaterialLogic material = new clsTD_MaterialLogic();
                Boolean opVal = false;
                int intIdGrupoArticulo, intIdMaterial, intIdSector, intIdModelo, intIdJerarquia;
                String strTipoABC;
                String strCodGrupoArticulo, strCodSector, strCodArticuloServ = "";
                strTipoABC = "N";


                if (grbMaterialPorAsginar.Selection.Count <= 0)
                {
                    lblmsj.Text = "Marcar un registro para grabar";
                    popupmsj.ShowOnPageLoad = true;
                    return;
                }


                int contador = 0;
                for (int i = 0; i < grbMaterialPorAsginar.VisibleRowCount; i++)
                {

                    if (grbMaterialPorAsginar.Selection.IsRowSelected(i))
                    {
                        ASPxTextBox txtcodigo = (ASPxTextBox)grbMaterialPorAsginar.FindRowCellTemplateControl(i, null, "ASPxTextBox1");
                        String desc_material = grbMaterialPorAsginar.GetRowValues(i, "DES_MATERIAL_IMP").ToString();
                        intIdGrupoArticulo = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_GRUPO_ARTICULO"));
                        intIdSector = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_SECTOR"));
                        intIdJerarquia = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_JERARQUIA"));
                        intIdModelo = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_MODELO"));
                        strCodGrupoArticulo = grbMaterialPorAsginar.GetRowValues(i, "COD_GRUPO_ARTICULO").ToString();
                        strCodSector = grbMaterialPorAsginar.GetRowValues(i, "COD_SECTOR").ToString();
                        intIdMaterial = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_MATERIAL"));
                        objTD_MATERIAL = new TD_MATERIAL();
                        objTD_MATERIAL.COD_MATERIAL = txtcodigo.Text;
                        objTD_MATERIAL.DES_MATERIAL = desc_material;
                        objTD_MATERIAL.ID_GRUPO_ARTICULO = intIdGrupoArticulo;
                        objTD_MATERIAL.ID_SECTOR = intIdSector;
                        objTD_MATERIAL.ID_JERARQUIA = intIdJerarquia;
                        objTD_MATERIAL.ID_MODELO = intIdModelo;
                        objTD_MATERIAL.TIPO_ABC = strTipoABC;
                        objTD_MATERIAL.COD_GRUPO_ARTICULO = strCodGrupoArticulo;
                        objTD_MATERIAL.COD_SECTOR = strCodSector;
                        objTD_MATERIAL.COD_ARTICULO_SERV = strCodArticuloServ;
                        objTD_MATERIAL.FEC_CREACION = DateTime.Now;
                        if (intIdGrupoArticulo != 0 && intIdSector != 99)
                        {

                            if (material.RetorIDMaterial(txtcodigo.Text) == 0)
                            {
                                opVal = InterfaceMaterial.Insertar(objTD_MATERIAL);
                                contador = contador + 1;
                                if (opVal)
                                {
                                    materialxAsginar.ActualizaCodMaterial(txtcodigo.Text, intIdMaterial);
                                    materialxAsginar.ActualizarIndAsignado(intIdMaterial);

                                }
                            }
                        }

                    }
                }
                if (contador > 0)
                {
                    this.ListaMaterialPorAsginar();
                    lblmsj.Text = "Se grabó los articulos asignados correctamente";
                    popupmsj.ShowOnPageLoad = true;
                    return;
                }
                else {                  
                    lblmsj.Text = "No se grabó ningun artículo";
                    popupmsj.ShowOnPageLoad = true;
                    return;
                
                }                
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "Grabar");
                MensajesError("Error en la aplicación", ex, "Grabar");
            }

        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Repuestos/wFrmDefault.aspx?id=3");
        }

        protected void ObtenerMarca(object sender, EventArgs e)
        {
            try
            {
                String strNroRueda = (cboRuedas.Value != null) ? cboRuedas.SelectedItem.Value.ToString() : null;
                cboMarca.Enabled = true;
                cboMarca.Value = null;
                cboMarca.Text = null;
                cboModelo.Enabled = false;
                cboModelo.Value = null;
                cboModelo.Text = null;
                CargaMarca(strNroRueda);
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "ObtenerMarca");
                MensajesError("Error en la aplicación", ex, "ObtenerMarca");
            }
        }

        private void CargaMarca(String strNroRueda)
        {
            try
            {

                listaMarca = new List<Object>();
                InterfaceMaterial = new FacadeRegistroMaterial();

                listaMarca = InterfaceMaterial.listaMarcaActivoxRueda(strNroRueda, "C");
                cboMarca.DataSource = listaMarca;
                cboMarca.TextField = "DES_MARCA";
                cboMarca.ValueField = "ID_MARCA";
                cboMarca.DataBind();
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "CargaMarca");
                MensajesError("Error en la aplicación", ex, "CargaMarca");
            }
        }

        protected void ObtenerModelo(object sender, EventArgs e)
        {
            try
            {
                String strNroRuedas = cboRuedas.SelectedItem.Value.ToString();
                int intIdMarca = Convert.ToInt32(cboMarca.SelectedItem.Value);
                cboModelo.Enabled = true;
                cboModelo.Value = null;
                cboModelo.Text = null;

                CargaModelo(strNroRuedas, intIdMarca);

            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "ObtenerModelo");
                MensajesError("Error en la aplicación", ex, "ObtenerModelo");
            }
        }

        protected void ObtenerIndBaja(object sender, EventArgs e)
        {
            try
            {
                int? intIndBaja;
                int intIdModelo = (cboModelo.Value != null) ? Convert.ToInt32(cboModelo.SelectedItem.Value) : 0;
                InterfaceMaterial = new FacadeRegistroMaterial();
                intIndBaja = InterfaceMaterial.ObtenerIndBajaModelo(intIdModelo);
                if (intIndBaja == 1)
                {
                    lblAnulado.Text = "Modelo Anulado";
                }
                else
                {
                    lblAnulado.Text = String.Empty;
                }
            }
            catch (Exception ex)
            {
                GuardarExceptionLog("Error en la aplicación", ex, "ObtenerIndBaja");
                MensajesError("Error en la aplicación", ex, "ObtenerIndBaja");
            }

        }

        private void ActualizaGrupoArticulo()
        {
            clsT_MaterialPorAsignarLogic l = new clsT_MaterialPorAsignarLogic();
            Boolean blValida = false;
            if (cboGrupoArticulo.SelectedItem == null) {

                lblmsj.Text = "Seleccione un grupo articulo";
                popupmsj.ShowOnPageLoad = true;
                return;
            }


            if (grbMaterialPorAsginar.Selection.Count <= 0) {
                lblmsj.Text = "Marcar un registro para aplicar cambios";
                popupmsj.ShowOnPageLoad = true;
                return;
            }

            try
            {
                for (int i = 0; i < grbMaterialPorAsginar.VisibleRowCount; i++)
                {
                    if (grbMaterialPorAsginar.Selection.IsRowSelected(i))
                    {

                        ASPxTextBox txtcodigo = (ASPxTextBox)grbMaterialPorAsginar.FindRowCellTemplateControl(i, null, "ASPxTextBox1");
                        int id_grupo_articulo = Convert.ToInt32(cboGrupoArticulo.SelectedItem.Value);
                        int id_material = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_MATERIAL"));
                        blValida=l.ActualizaIdGrupoArticulos(txtcodigo.Text, id_grupo_articulo, id_material);

                    }
                }

                if (blValida)
                {
                    this.ListaMaterialPorAsginar();
                }

            }
            catch (DataException ex)
            {

                GuardarExceptionLog(ex.Message, ex, "ActualizaGrupoArticulo");
                MensajesError(ex.Message, ex, "ActualizaGrupoArticulo");
            }
            catch (RunException ex)
            {

                GuardarExceptionLog(ex.Message, ex, "ActualizaGrupoArticulo");
                MensajesError(ex.Message, ex, "ActualizaGrupoArticulo");
            }

        }




        private void ActualizaSector()
        {
            clsT_MaterialPorAsignarLogic l = new clsT_MaterialPorAsignarLogic();

            Boolean blValida = false;

            if (cboSector.SelectedItem == null)
            {

                lblmsj.Text = "Seleccione Sector";
                popupmsj.ShowOnPageLoad = true;
                return;
            }


            if (grbMaterialPorAsginar.Selection.Count <= 0)
            {
                lblmsj.Text = "Marcar un registro para aplicar cambios";
                popupmsj.ShowOnPageLoad = true;
                return;
            }




            try
            {
                for (int i = 0; i < grbMaterialPorAsginar.VisibleRowCount; i++)
                {
                    if (grbMaterialPorAsginar.Selection.IsRowSelected(i))
                    {

                        ASPxTextBox txtcodigo = (ASPxTextBox)grbMaterialPorAsginar.FindRowCellTemplateControl(i, null, "ASPxTextBox1");
                        int id_sector = Convert.ToInt32(cboSector.SelectedItem.Value);
                        int id_material = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_MATERIAL"));
                        blValida=l.ActualizaIdSector(txtcodigo.Text, id_sector, id_material);

                    }
                }


                if (blValida)
                {
                    this.ListaMaterialPorAsginar();
                }

            }
            catch (DataException ex)
            {

                GuardarExceptionLog(ex.Message, ex, "ActualizaGrupoArticulo");
                MensajesError(ex.Message, ex, "ActualizaGrupoArticulo");
            }
            catch (RunException ex)
            {

                GuardarExceptionLog(ex.Message, ex, "ActualizaGrupoArticulo");
                MensajesError(ex.Message, ex, "ActualizaGrupoArticulo");
            }

        }


        private void ActualizaJerarquia()
        {
            clsT_MaterialPorAsignarLogic l = new clsT_MaterialPorAsignarLogic();

            Boolean blValida = false;


            if (txtidJerarquia.Text == String.Empty)
            {

                lblmsj.Text = "Seleccione Jerarquia";
                popupmsj.ShowOnPageLoad = true;
                return;
            }


            if (grbMaterialPorAsginar.Selection.Count <= 0)
            {
                lblmsj.Text = "Marcar un registro para aplicar cambios";
                popupmsj.ShowOnPageLoad = true;
                return;
            }



            try
            {
                for (int i = 0; i < grbMaterialPorAsginar.VisibleRowCount; i++)
                {
                    if (grbMaterialPorAsginar.Selection.IsRowSelected(i))
                    {

                        ASPxTextBox txtcodigo = (ASPxTextBox)grbMaterialPorAsginar.FindRowCellTemplateControl(i, null, "ASPxTextBox1");
                        int id_jerarquia = Convert.ToInt32(txtidJerarquia.Text);
                        int id_material = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_MATERIAL"));
                        blValida=l.ActualizaIdJerarquia(txtcodigo.Text, id_jerarquia, id_material);

                    }
                }


                if (blValida) {
                    this.ListaMaterialPorAsginar();
                }

            }
            catch (DataException ex)
            {

                GuardarExceptionLog("Error en la aplicación", ex, "ActualizaGrupoArticulo");
                MensajesError("Error en la aplicación", ex, "ActualizaGrupoArticulo");
            }
            catch (RunException ex)
            {

                GuardarExceptionLog(ex.Message, ex, "ActualizaGrupoArticulo");
                MensajesError(ex.Message, ex, "ActualizaGrupoArticulo");
            }

        }



        private void ActualizaModelo()
        {
            clsT_MaterialPorAsignarLogic l = new clsT_MaterialPorAsignarLogic();
            Boolean blValida = false;
            if (cboModelo.SelectedItem == null)
            {

                lblmsj.Text = "Seleccione Modelo";
                popupmsj.ShowOnPageLoad = true;
                return;
            }


            if (grbMaterialPorAsginar.Selection.Count <= 0)
            {
                lblmsj.Text = "Marcar un registro para aplicar cambios";
                popupmsj.ShowOnPageLoad = true;
                return;
            }
            try
            {
                for (int i = 0; i < grbMaterialPorAsginar.VisibleRowCount; i++)
                {
                    if (grbMaterialPorAsginar.Selection.IsRowSelected(i))
                    {

                        ASPxTextBox txtcodigo = (ASPxTextBox)grbMaterialPorAsginar.FindRowCellTemplateControl(i, null, "ASPxTextBox1");
                        int id_modelo = Convert.ToInt32(cboModelo.SelectedItem.Value);
                        int id_material = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(i, "ID_MATERIAL"));
                        blValida=l.ActualizaIdModelo(txtcodigo.Text, id_modelo, id_material);

                    }
                }


                if (blValida) {

                    this.ListaMaterialPorAsginar();
                }


            }
            catch (DataException ex)
            {

                GuardarExceptionLog(ex.Message, ex, "ActualizaGrupoArticulo");
                MensajesError(ex.Message, ex, "ActualizaGrupoArticulo");
            }
            catch (RunException ex)
            {

                GuardarExceptionLog(ex.Message, ex, "ActualizaGrupoArticulo");
                MensajesError(ex.Message, ex, "ActualizaGrupoArticulo");
            }

        }


        protected void btnAginarGrupoArticulos_Click(object sender, EventArgs e)
        {

            this.ActualizaGrupoArticulo();
        }

        protected void btnAsginarSector_Click(object sender, EventArgs e)
        {
            this.ActualizaSector();
        }

        protected void btnAsignarSector_Click(object sender, EventArgs e)
        {
            this.ActualizaJerarquia();
        }

        protected void btnAsignarModelo_Click(object sender, EventArgs e)
        {
            this.ActualizaModelo();
        }


        protected void ASPxTextBox1_Init(object sender, EventArgs e)
        {
            ASPxTextBox textBox = sender as ASPxTextBox;
            GridViewDataItemTemplateContainer container = textBox.NamingContainer as GridViewDataItemTemplateContainer;
            textBox.JSProperties["cpHFKey"] = String.Format("{0}_{1}", container.Column.FieldName, container.KeyValue);

        }

        protected void ASPxTextBox1_TextChanged(object sender, EventArgs e)
        {
            clsT_MaterialPorAsignarLogic l = new clsT_MaterialPorAsignarLogic();
            int intIndex=grbMaterialPorAsginar.FocusedRowIndex;
            if (intIndex != -1) {
                ASPxTextBox txtcodigo = (ASPxTextBox)grbMaterialPorAsginar.FindRowCellTemplateControl(intIndex, null, "ASPxTextBox1");
                int id_material = Convert.ToInt32(grbMaterialPorAsginar.GetRowValues(intIndex, "ID_MATERIAL"));
                l.ActualizaCodMaterial(txtcodigo.Text, id_material);
            }           

        }
    }
}